package main.java.BLT;


public class Batalla {
	

	public static void usarBonusPrimeroLider(Jugador jugador){
		
		Integer numeroDeVecesQueSeSaca = jugador.getLider().getBonusPrimero();
		if(jugador.getBajas().getCartas().size()>0){
			while(numeroDeVecesQueSeSaca>0 && !jugador.getBajas().getCartas().isEmpty()){
				Ejercito e= (Ejercito)jugador.getBajas().sacarCartaUltima();
				System.out.println(" Ha conseguido la carta:" + e.toString());
				jugador.getReserva().getCartas().add(e);
				jugador.getReserva().ordena();
				numeroDeVecesQueSeSaca--;
				
			}
		}else{
			System.out.println("No tiene ninguna carta en su mazo de reserva");
		}
	}

		
	public static Integer usarBonusSegundoLider(Jugador jugador){
		Bonus b= jugador.getLider().getBonusSegundo();
		Boolean bArtilleria = b.isTipoCartaArtilleria();
		Boolean bInfanteria = b.isTipoCartaInfanteria();
		Boolean bCaballeria = b.isTipoCartaCaballeria();
		Boolean bMilicia = b.isTipoCartaMilicia();

		Integer r= definirValoresDeCartasQueSalen(bArtilleria,bInfanteria,bCaballeria,bMilicia,jugador);
		return numeroDeCartasQueParaBonusDeMazo(r,jugador);
	}

	public static Integer definirValoresDeCartasQueSalen(Boolean bArtilleria,Boolean bInfanteria,Boolean bCaballeria,Boolean bMilicia, Jugador jugador){

		Integer r = 5;
		if(bArtilleria == true && bInfanteria==true && bCaballeria==true && bMilicia==false ){
			r = 0;
		}else if(bArtilleria == false && bInfanteria==false && bCaballeria==true && bMilicia==false){
			r = 1;
		}else if(bArtilleria == false && bInfanteria==true && bCaballeria==false && bMilicia==false){
			r = 2;
		}else if(bArtilleria == false && bInfanteria==true && bCaballeria==false && bMilicia==true){
			r = 3;
		}else if(bArtilleria == true && bInfanteria==false && bCaballeria==false && bMilicia==false){
			r = 4;
		}
		return r;

	}
	
	public static Integer numeroDeCartasQueParaBonusDeMazo(Integer r,Jugador jugador){

		Integer cont=0;
		Integer valor =	jugador.getLider().getBonusSegundo().getValor();

		if(r==0){
			for(int i=0; i<jugador.getReservaEnJuego().getCartas().size();i++){
				Carta c = jugador.getReservaEnJuego().sacarCartaEn(i);
				if(c.getValor()==3 ||c.getValor()==5|| c.getValor()==1){
					cont++;
				}
			}
		}else if(r==1){
			for(int i=0; i<jugador.getReservaEnJuego().getCartas().size();i++){
				Carta c = jugador.getReservaEnJuego().sacarCartaEn(i);
				if(c.getValor()==3){
					cont++;
				}
				
			}	
		}else if(r==2){
			for(int i=0; i<jugador.getReservaEnJuego().getCartas().size();i++){
				Carta c = jugador.getReservaEnJuego().sacarCartaEn(i);
				if(c.getValor()==1){
					cont++;
				}
				
			}
		}else if(r==3){
			for(int i=0; i<jugador.getReservaEnJuego().getCartas().size();i++){
				Carta c = jugador.getReservaEnJuego().sacarCartaEn(i);
				if(c.getValor()==0 || c.getValor()==1){
					cont++;
				}

			}
		}else if(r==4){

			for(int i=0; i<jugador.getReservaEnJuego().getCartas().size();i++){

				Carta c = jugador.getReservaEnJuego().sacarCartaEn(i);
				if(c.getValor()==5){
					cont++;
				}
			}
		}
		return cont*valor;
	}
}
